import datetime
from typing import Dict, Union
def get_week_info(date: datetime.date) -> Dict[str, Union[int, str]]:
    """
    返回一个对象，包含了属于年份、周数、周几的信息，处理跨年周的情况。

    Args:
        date (datetime.date): 输入的日期。

    Returns:
        Dict[str, Union[int, str]]: 包含年份、周数和周几的字典。
    """
    try:
        # 获取ISO周数和年份
        iso_year, iso_week, iso_weekday = date.isocalendar()
        # 将ISO周数转换为中文格式
        weekday = f"周{iso_weekday}".replace("周7", "周日")
        return {
            "year": iso_year,
            "week_number": iso_week,
            "weekday": weekday
        }
    except Exception as e:
        raise ValueError(f"无法计算日期的周信息: {str(e)}")

def are_dates_in_same_week(date1: datetime.date, date2: datetime.date) -> bool:
    """
    判断两个日期是否在同一周。

    Args:
        date1 (datetime.date): 第一个日期。
        date2 (datetime.date): 第二个日期。

    Returns:
        bool: 如果两个日期在同一周，返回 True；否则返回 False。
    """
    try:
        # 使用 ISO 周历判断是否在同一周
        return date1.isocalendar()[:2] == date2.isocalendar()[:2]
    except Exception as e:
        raise ValueError(f"无法判断日期是否在同一周: {str(e)}")